@Ineverleft
2年前 提问
1个回答

云计算加强计算能力的优化技术有哪些

上官雨宝
2年前

云计算加强计算能力的优化技术有以下这些:

  • 实时性内核技术:标准的操作系统内核是通过时间片轮询的方法为多个任务分配CPU,并通过抢占的机制来确保高优先级的任务能够优先获得CPU资源,但是不是所有的请求都能够抢占资源,如中断请求。一般情况下,标准的Linux内核能够提供几到几十微秒级别的中断响应时延,但是具体时延具有不确定性。当数据平面网元对性能要求比较苛刻时,这个不确定性可能会导致严重后果。通过对内核的实时性补丁,可以使其满足硬实时系统的要求。

  • 硬件辅助虚拟化技术:CPU工作模式存在不同的特权级别。宿主OS工作在Ring0,拥有对CPU的完全权限,而客户OS一般工作在Ring1~Ring3,无权执行部分特权指令。早期的虚拟化技术需要通过宿主OS来实时监控并截获客户OS产生的特权指令,由宿主OS执行后再将结果返回给客户OS,这种由客户OS纯软件模拟的工作模式效率极低,无法胜任数据面网元的性能要求。打开CPU的硬件辅助虚拟化功能,利用CPU已有的虚拟化技术,消除宿主OS代替客户OS来听取、中断与执行特定指令的需要,不仅能够有效减少宿主OS干预,还为宿主OS与客户OS之间的传输平台控制提供有力的硬件支持,这样在需要宿主OS干预时,将实现更加快速、可靠和安全的切换。

  • CPU核心绑定技术:在多路多核处理器的服务器环境下,操作系统进行多任务处理时,传统的做法是将服务器CPU划分成时间片,并将任务按不同优先级进行调度,为每个任务分配一个或多个时间片,在每个时间片内由对应的CPU处理任务。但同一个任务在不同时间可能会被调度给不同CPU核来处理,这就导致缓存的命中率过低,从而降低CPU性能。

  • 非均匀存储器访问亲和技术:目前主流的服务器均采用NUMA架构,一颗物理CPU就是一个NUMA节点,每个NUMA节点都有各自的本地内存,CPU既可访问本地内存,也可以访问其他NUMA节点的内存,但远程内存访问的性能远低于本地内存访问。而数据平面网元虚拟机一般是多线程的,每个线程的计算由不同的CPU核来完成,当这些线程被调度到位于不同NUMA节点的CPU核时,不可避免地会出现远程内存访问的情况,从而降低CPU性能。可以用Hypervisor的NUMA亲和性技术,将数据平面网元的线程调度到同一个NUMA节点的多个核心来处理。但是,一旦虚拟机迁移后,需要有其他的机制来保证数据平面网元迁移后的NUMA亲和性。

  • 巨页内存技术:操作系统对内存的管理是通过分页来实现的,一个标准的内存页大小是4KB,每个内存页操作系统都会为其分配一个物理地址,而数据平面网元虚拟机是通过虚拟地址来访问为其分配的内存页的。宿主OS负责完成虚拟地址到物理地址的映射。虚拟地址到物理地址的映射关系保存在内存页表中,同时CPU的快表可保存经常访问的地址映射。由于TLB具备比内存高得多的性能,使得TLB快表的命中率成了提升内存性能的关键。但是,NFV场景下服务器的内存容量一般都比较大,而TLB可以保存的地址数量有限,造成TLB命中率比较低。